package com.moss.cloud.base.biz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moss.cloud.base.api.model.from.BaseFrom;
import com.moss.cloud.base.api.model.from.ChildrenFrom;
import com.moss.cloud.base.api.model.from.PositionFrom;
import com.moss.cloud.base.api.model.param.PositionParam;
import com.moss.cloud.base.api.model.vo.PositionVO;
import com.moss.cloud.base.biz.model.SysPosition;
import com.moss.cloud.common.core.model.vo.BaseProTree;

import java.util.List;

/**
 * 职位管理业务接口
 *
 * @author 瑾年
 * @date 2023年12月19日
 */
public interface ISysPositionService extends IService<SysPosition> {

    /**
     * 职位分页查询
     *
     * @param positionParam
     * @return
     */
    IPage<PositionVO> positionPage(PositionParam positionParam);

    /**
     * 查询职位孩子节点数据
     *
     * @param childrenFrom
     * @return
     */
    List<PositionVO> childrenList(ChildrenFrom childrenFrom);

    /**
     * 职位树结构
     *
     * @param positionParam
     * @return
     */
    List<BaseProTree> positionTree(PositionParam positionParam);

    /**
     * 职位详情
     *
     * @param baseFrom
     * @return
     */
    SysPosition position(BaseFrom baseFrom);

    /**
     * 新增职位
     *
     * @param positionFrom
     * @return
     */
    boolean savePosition(PositionFrom positionFrom);

    /**
     * 更新职位
     *
     * @param positionFrom
     * @return
     */
    boolean updatePosition(PositionFrom positionFrom);

    /**
     * 删除职位
     *
     * @param baseFrom
     * @return
     */
    boolean removePosition(BaseFrom baseFrom);

    /**
     * 职位代号查询职位数量
     *
     * @param code
     * @return
     */
    long positionByCode(String code);
}
